/*
 * The MIT License
 *
 * Copyright 2015 chronosinfo.com.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 * Autor John Vanderson M Lima
 */
package com.chronos.pafecf.modelo;

import com.chronos.pafecf.entidades.EcfConfiguracao;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author usuario
 */
public class EcfConfiguracaoDao extends GenericDao {

    private String sql;

    public EcfConfiguracao getEcfConfiguracao(int id) throws SQLException {
        ResultSet rs = execultQuery("select * from ecf_configuracao where id=?", id);
        EcfConfiguracao obj = null;
        if (rs.next()) {
            obj = popularObjeto(rs);
        }
        rs.close();
        return obj;
    }

    private EcfConfiguracao popularObjeto(ResultSet rs) throws SQLException {
        EcfConfiguracao configuracao = new EcfConfiguracao();
        configuracao.setIdImpressora(rs.getInt("ID_ECF_IMPRESSORA"));
        configuracao.setIdCaixa(rs.getInt("ID_ECF_CAIXA"));
        configuracao.setIdEmpresa(rs.getInt("ID_ECF_EMPRESA"));
        configuracao.setMensagemCupom(rs.getString("MENSAGEM_CUPOM"));
        configuracao.setPortaEcf(rs.getString("PORTA_ECF"));
        configuracao.setIpServidor(rs.getString("IP_SERVIDOR"));
        configuracao.setIpSitef(rs.getString("IP_SITEF"));
        configuracao.setTipoTef(rs.getString("TIPO_TEF"));
        configuracao.setTituloTelaCaixa(rs.getString("TITULO_TELA_CAIXA"));
        configuracao.setCaminhoImagensProdutos(rs.getString("CAMINHO_IMAGENS_PRODUTOS"));
        configuracao.setCaminhoImagensMarketing(rs.getString("CAMINHO_IMAGENS_MARKETING"));
        configuracao.setCaminhoImagensLayout(rs.getString("CAMINHO_IMAGENS_LAYOUT"));
        configuracao.setCorJanelasInternas(rs.getString("COR_JANELAS_INTERNAS"));
        configuracao.setMarketingAtivo(rs.getString("MARKETING_ATIVO"));
        configuracao.setCfopEcf(rs.getInt("CFOP_ECF"));
        configuracao.setCfopNf2(rs.getInt("CFOP_NF2"));
        configuracao.setTimeOutEcf(rs.getInt("TIMEOUT_ECF"));
        configuracao.setIntervaloEcf(rs.getInt("INTERVALO_ECF"));
        configuracao.setDescricaoSuprimento(rs.getString("DESCRICAO_SUPRIMENTO"));
        configuracao.setDescricaoSangria(rs.getString("DESCRICAO_SANGRIA"));
        configuracao.setTefTipoGp(rs.getInt("TEF_TIPO_GP"));
        configuracao.setTefTempoEspera(rs.getInt("TEF_TEMPO_ESPERA"));
        configuracao.setTefEsperaSts(rs.getInt("TEF_ESPERA_STS"));
        configuracao.setTefNumeroVias(rs.getInt("TEF_NUMERO_VIAS"));
        configuracao.setDecimaisQuantidade(rs.getInt("DECIMAIS_QUANTIDADE"));
        configuracao.setDecimaisValor(rs.getInt("DECIMAIS_VALOR"));
        configuracao.setBitsPorSegundo(rs.getInt("BITS_POR_SEGUNDO"));
        configuracao.setQtdeMaximaCartoes(rs.getInt("QTDE_MAXIMA_CARTOES"));
        configuracao.setPesquisaParte(rs.getString("PESQUISA_PARTE"));
        configuracao.setConfiguracaoBalanca(rs.getString("CONFIGURACAO_BALANCA"));
        configuracao.setParametrosDiversos(rs.getString("PARAMETROS_DIVERSOS"));
        configuracao.setUltimaExclusao(rs.getInt("ULTIMA_EXCLUSAO"));
        configuracao.setLaudo(rs.getString("LAUDO"));
        configuracao.setIndiceGerencial(rs.getString("INDICE_GERENCIAL"));
        configuracao.setDataAtualizacaoEstoque(rs.getDate("DATA_ATUALIZACAO_ESTOQUE"));

        configuracao.getImpressora().setId(rs.getInt("ID_ECF_IMPRESSORA"));
        configuracao.getImpressora().setModeloAcbr(rs.getString("MODELO_ACBR"));
        configuracao.getImpressora().setSerie(rs.getString("SERIE"));

        configuracao.getResolucao().setResolucaoTela(rs.getString("RESOLUCAO_TELA"));
        configuracao.getResolucao().setLargura(rs.getInt("LARGURA"));
        configuracao.getResolucao().setAltura(rs.getInt("ALTURA"));
        configuracao.getResolucao().setImagemTela(rs.getString("IMAGEM_TELA"));

                 // TODO: -Complete o VO da resolução caso queira fazer uso das opções abaixo no sistema
//                 configuracao.getResolucao().setImagemMenu(rs.getString("IMAGEM_MENU"));
//                 configuracao.getResolucao().setImagemSubMenu(rs.getString("IMAGEM_SUBMENU"));
//                 configuracao.getResolucao().setHotTrackColor(rs.getString("HOTTRACK_COLOR"));
//                 configuracao.getResolucao().setItemStyleFontName(rs.getString("ITEM_STYLE_FONT_NAME"));
//                 configuracao.getResolucao().setItemStyleFontColor(rs.getString("ITEM_STYLE_FONT_COLOR"));
//                 configuracao.getResolucao().setItemSelStyleColor(rs.getString("ITEM_SEL_STYLE_COLOR"));
//                 configuracao.getResolucao().setLabelTotalGeralFontColor(rs.getString("LABEL_TOTAL_GERAL_FONT_COLOR"));
//                 configuracao.getResolucao().setItemStyleFontStyle(rs.getString("ITEM_STYLE_FONT_STYLE"));
//                 configuracao.getResolucao().setEditColor(rs.getString("EDITS_COLOR"));
//                 configuracao.getResolucao().setEditFontColor(rs.getString("EDITS_FONT_COLOR"));
//                 configuracao.getResolucao().setEditDisabledColor(rs.getString("EDITS_DISABLED_COLOR"));
//                 configuracao.getResolucao().setEditFontName(rs.getString("EDITS_FONT_NAME"));
//                 configuracao.getResolucao().setEditFontStyle(rs.getString("EDITS_FONT_STYLE"));
        configuracao.setNomeCaixa(rs.getString("NOME_CAIXA"));
        configuracao.setModeloImpressora(rs.getString("MODELO_ACBR"));
        configuracao.setNumSerieEcf(rs.getString("SERIE"));

        //******* Balança ********************************************
        String[] linha = configuracao.getConfiguracaoBalanca().split("\\|");

        configuracao.setBalancaModelo(Integer.valueOf(linha[0]));
        configuracao.setBalancaIdentificadorBalanca(linha[1]);
        configuracao.setBalancaHandShaking(Integer.valueOf(linha[2]));
        configuracao.setBalancaParity(Integer.valueOf(linha[3]));
        configuracao.setBalancaStopBits(Integer.valueOf(linha[4]));
        configuracao.setBalancaDataBits(Integer.valueOf(linha[5]));
        configuracao.setBalancaBaudRate(Integer.valueOf(linha[6]));
        configuracao.setBalancaPortaSerial(linha[7]);
        configuracao.setBalancaTimeOut(Integer.valueOf(linha[8]));
        configuracao.setBalancaTipoConfiguracaoBalanca(linha[9]);
                //*******  Fim Balança ***************************************

        //******* Índice Gerencial ***********************************************
        linha = configuracao.getIndiceGerencial().split("\\|");

        configuracao.setGerencialX(Integer.valueOf(linha[0]));
        configuracao.setMeiosDePagamento(Integer.valueOf(linha[1]));
        configuracao.setDavEmitidos(Integer.valueOf(linha[2]));
        configuracao.setIdentificacaoPaf(Integer.valueOf(linha[3]));
        configuracao.setParametrosDeConfiguracao(Integer.valueOf(linha[4]));
        configuracao.setRelatorio(Integer.valueOf(linha[5]));
                //******* Fim Índice Gerencial ********************************************

        //******* Parâmetros Diversos *********************************************
        linha = configuracao.getParametrosDiversos().split("\\|");

        configuracao.setPedeCPFCupom(Integer.valueOf(linha[0]));
        configuracao.setUsaIntegracao(Integer.valueOf(linha[0]));
        configuracao.setTimerIntegracao(Integer.valueOf(linha[0]));
        configuracao.setGavetaDinheiro(Integer.valueOf(linha[0]));
        configuracao.setSinalInvertido(Integer.valueOf(linha[0]));
        configuracao.setQtdeMaximaParcelas(Integer.valueOf(linha[0]));
        configuracao.setImprimeParcelas(Integer.valueOf(linha[0]));
        configuracao.setTecladoReduzido(Integer.valueOf(linha[0]));
        //Leitor Serial
        configuracao.setUsaLeitorSerial(Integer.valueOf(linha[0]));
        configuracao.setPortaLeitorSerial(linha[0]);
        configuracao.setBaudLeitorSerial(linha[0]);
        configuracao.setSufixoLeitorSerial(linha[0]);
        configuracao.setIntervaloLeitorSerial(linha[0]);
        configuracao.setDataLeitorSerial(linha[0]);
        configuracao.setParidadeLeitorSerial(Integer.valueOf(linha[0]));
        configuracao.setHardFlowLeitorSerial(Integer.valueOf(linha[0]));
        configuracao.setSoftFlowLeitorSerial(Integer.valueOf(linha[0]));
        configuracao.setHandShakeLeitorSerial(Integer.valueOf(linha[0]));
        configuracao.setStopLeitorSerial(Integer.valueOf(linha[0]));
        configuracao.setFilaLeitorSerial(Integer.valueOf(linha[0]));
        configuracao.setExcluiSufixoLeitorSerial(Integer.valueOf(linha[0]));
        //Lançamento Notas Manuais
        configuracao.setLancamentoNotasManuais(Integer.valueOf(linha[0]));
        //******* Fim Parâmetros Diversos *****************************************

        return configuracao;
    }

    public EcfConfiguracao pegarConfiguracao() throws SQLException {
        sql = "select "
                + " C.ID_ECF_IMPRESSORA, "
                + " C.ID_ECF_RESOLUCAO, "
                + " C.ID_ECF_CAIXA, "
                + " C.ID_ECF_EMPRESA, "
                + " C.MENSAGEM_CUPOM, "
                + " C.PORTA_ECF, "
                + " C.IP_SERVIDOR, "
                + " C.IP_SITEF, "
                + " C.TIPO_TEF, "
                + " C.TITULO_TELA_CAIXA, "
                + " C.CAMINHO_IMAGENS_PRODUTOS, "
                + " C.CAMINHO_IMAGENS_MARKETING, "
                + " C.CAMINHO_IMAGENS_LAYOUT, "
                + " C.COR_JANELAS_INTERNAS, "
                + " C.MARKETING_ATIVO, "
                + " C.CFOP_ECF, "
                + " C.CFOP_NF2, "
                + " C.TIMEOUT_ECF, "
                + " C.INTERVALO_ECF, "
                + " C.DESCRICAO_SUPRIMENTO, "
                + " C.DESCRICAO_SANGRIA, "
                + " C.TEF_TIPO_GP, "
                + " C.TEF_TEMPO_ESPERA, "
                + " C.TEF_ESPERA_STS, "
                + " C.TEF_NUMERO_VIAS, "
                + " C.DECIMAIS_QUANTIDADE, "
                + " C.DECIMAIS_VALOR, "
                + " C.BITS_POR_SEGUNDO, "
                + " C.QTDE_MAXIMA_CARTOES, "
                + " C.PESQUISA_PARTE, "
                + " C.CONFIGURACAO_BALANCA, "
                + " C.PARAMETROS_DIVERSOS, "
                + " C.ULTIMA_EXCLUSAO, "
                + " C.LAUDO, "
                + " C.INDICE_GERENCIAL, "
                + " C.DATA_ATUALIZACAO_ESTOQUE, "
                + " C.SINCRONIZADO, "
                + " R.RESOLUCAO_TELA, "
                + " R.LARGURA, "
                + " R.ALTURA, "
                + " R.IMAGEM_TELA, "
                + " R.IMAGEM_MENU, "
                + " R.IMAGEM_SUBMENU, "
                + " R.HOTTRACK_COLOR, "
                + " R.ITEM_STYLE_FONT_NAME, "
                + " R.ITEM_STYLE_FONT_COLOR, "
                + " R.ITEM_SEL_STYLE_COLOR, "
                + " R.LABEL_TOTAL_GERAL_FONT_COLOR, "
                + " R.ITEM_STYLE_FONT_STYLE,"
                + " R.EDITS_COLOR, "
                + " R.EDITS_FONT_COLOR, "
                + " R.EDITS_DISABLED_COLOR, "
                + " R.EDITS_FONT_NAME, "
                + " R.EDITS_FONT_STYLE, "
                + " (select nome from ECF_CAIXA where ECF_CAIXA.id=c.ID_ECF_CAIXA) AS NOME_CAIXA,"
                + " I.MODELO_ACBR, "
                + " I.SERIE "
                + "from "
                + " ECF_RESOLUCAO R, ECF_CONFIGURACAO C, ECF_IMPRESSORA I "
                + "where "
                + " C.ID_ECF_RESOLUCAO=R.ID and C.ID_ECF_IMPRESSORA=I.ID";
        try {
            ResultSet rs = execultQuery(sql);
            EcfConfiguracao conf = null;
            if (rs.next()) {
                conf = pegarConfiguracao();
            }
            rs.close();
            return conf;
        } catch (SQLException e) {
            return null;
        } finally {
            desconectarDB();
        }

    }
}
